package constants

// 数字
const DIGITS = "0123456789"

// 字符串
const LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&|_"

// 字符串加上数字
const LETTERS_DIGITS = LETTERS + DIGITS

/**
token type,token的类型
*/
const (
	TT_INT     = "INT"    // token 为 整型
	TT_FLOAT   = "FLOAT"  // token 为 浮点
	TT_STRING  = "STRING" // token 为 字符串
	TT_PLUS    = "PLUS"   // token 为 加
	TT_MINUS   = "MINUS"  // token 为 减
	TT_MUL     = "MUL"    // token 为 乘
	TT_DIV     = "DIV"    // token 为 除
	TT_YU      = "YU"     // token 为 求余
	TT_POW     = "POW"    // token 为 求幂
	TT_EQ      = "EQ"     // token 为 等于
	TT_LPAREN  = "LPAREN"
	TT_RPAREN  = "RPAREN"
	TT_LSQUARE = "LSQUARE"
	TT_RSQUARE = "RSQUARE"
	TT_EE      = "EE"
	TT_NE      = "NE"
	TT_LT      = "LT"
	TT_GT      = "GT"
	TT_LTE     = "LTE"
	TT_GTE     = "GTE"
	TT_COMMA   = "COMMA"
	TT_ARROW   = "ARROW"
	TT_NEWLINE = "NEWLINE"
	TT_EOF     = "EOF"
)

// 标识符
const TT_IDENTIFIER = "IDENTIFIER"

/**
定义所有的关键字，最长的应该放在最前面，所有的都是对象
*/
const TT_KEYWORD = "KEYWORD"

var KEYWORDS = map[string]interface{}{
	"VAR":      "var",
	"AND":      "and",
	"OR":       "or",
	"NOT":      "not",
	"IF":       "if",
	"ELIF":     "elseif",
	"ELSE":     "else",
	"FOR":      "for",
	"TO":       "to",
	"STEP":     "step",
	"WHILE":    "while",
	"FUN":      "func",
	"THEN":     "then",
	"END":      "end",
	"RETURN":   "return",
	"CONTINUE": "continue",
	"BREAK":    "break",
}
